var map = null;
var divMap = null;
var markers = [];
var mahoGlobal = [];
//var polylines = []; ko dung
//var polylineEdit = null;
var polylineOptions = null;
//var polygonOptions = null;
var allmarkers = [];
var allPointMarkersI = "";
var allPointMarkers = [];
var allma = [];
//bien tuong tac hanh chinh
var administratorService = null;

//bien ve ranh gioi hanh chinh cua Phuong Xa
var objCommunePolygon = null;

var areaServiceUrl = null;

//var strDiaBan = $('#selectDiBanDieuTra').val();
var option = null

var strCommuneCode = null;
var strMaChucNang = null;

//khai bao bien marker manager
var markerManager = null;
//var allmarkers = [];
var allmarkersMannual = [];

// Ham khoi tao map va mot so doi tuong
function loadMapToDraw(index, serviceUrl, strCommuneCodePara){
    // Khoi tao map
    divMap = document.getElementById('map');
    strCommuneCode = strCommuneCodePara;
    var mapTypeID = viettel.MapTypeId.TRAFFIC;
    var mapZoom = 14; //muc zoom mac dinh
    var panZoomControlPosition = 4;
    //var centerPoint = new viettel.LatLng(21.0252531, 105.773691);

    map = new viettel.Map(divMap, {
        zoom: mapZoom,
        //center: centerPoint,
        mapTypeId: mapTypeID,
        //overviewMapControl: false,   //gopro: an hien overviewMap phia duoi goc phai cua ban do
        searchControl: false,
        panZoomControl: true,
        panZoomControlOptions: { position: panZoomControlPosition }, //thay doi vi tri cua panZoomControl
        scrollwheel: true,
        //zoom: 13
    });
    polylineOptions = {
        strokeColor: "#0000FF",
        strokeOpacity: 0.4,
        strokeWeight: 6,
        clickable: true,
        map: map
    };

    //phunx1, 20150514: area service url
    areaServiceUrl = serviceUrl;

    administratorService = new viettel.AdministrationService();
    administratorService.setReturnType(viettel.AdminReturnType.CODE || viettel.AdminReturnType.NAME
        || viettel.AdminReturnType.PATH || viettel.AdminReturnType.BOUND); //Them return BOUND de phuc vu highlight KVHC

    //gopro, 20150115: hien thi ranh gioi Phuong Lang Thuong de Demo
    
    

    //print == 1 tương đương với khổ A3 hoặc A4 do người dùng truyền vào.
    //trường hợp còn lại --> chức năng thống kê hộ dân cư trên địa bàn

    selectCommune();
    $('#selectDiBanDieuTra').change(function () {
        //xoa cac marker truoc
        deleteMarkers();
        $("#ThongTin").hide(1000);
        $("#DBDT").empty();

        var strMaDiaBan = "";
        strMaDiaBan = $('#selectDiBanDieuTra').val();

        if (strMaDiaBan.toString() == "") {
            selectCommune();
            return;
        }
        else {
            getBoundPoints(strMaDiaBan);

        }
    });

    $('#Luu').click(function () {
        if (allPointMarkers.length != 0) {
            for (var i = 0 ; i < allPointMarkers.length; i++) {
                if (i % 2 == 1)
                    allPointMarkersI += allPointMarkers[i];
            }

            $.ajax({
                url: strUrlEditHDC,
                headers: headers,
                type: "POST",
                data: { 'Stringlaglong': allPointMarkersI },
                success: function () {
                    alert("Thêm mới thành công");
                    allPointMarkersI = "";
                    allPointMarkers.splice(0, allPointMarkers.length);
                },
                error: function (xhr) {
                    alert('Không kết nối được đến DataBase 242!');
                    return null;
                }
            });
        }
        else
            return;
        //alert(allPointMarkersI);
    });

    $(".control-close").click(function () {
        var parent = $(this).parent().parent();
        if (parent.children(".middle").css("display") == "none") {
            $(this).css("background-position", "");
            parent.children(".middle").css("display", "block");
            if (parent.attr("id") == "view-level-control") { $("#heat-scale").css("top", "400px") }
        } else {
            $(this).css("background-position", "-18px 0px");
            parent.children(".middle").css("display", "none");
            if (parent.attr("id") == "view-level-control") { $("#heat-scale").css("top", "320px") }
        }
    });

}

//ham hien tai fix la phuong Lang Thuong - Dong Da - Ha Noi de Demo
function selectCommune() {
    //ma phuong Lang Thuong - 00187
    //var code = "00187";
    //ma phuong My Dinh 2
    //var code = "00626";
    var code = strCommuneCode;

    administratorService.setLevel(viettel.AdminLevelType.COMMUNE);
    administratorService.getFeatureFromCode(code, function (status, result) {
        drawCommune(status, result);
    });
}

//ve Phuong Lang Thuong - Dong Da - Ha Noi
function drawCommune(status, result) {
    if (status == 0) {
        var item = result.items[0];
        objCommunePolygon = new viettel.Polygon({
            paths: item.paths,
            //strokeColor: "#0000FF",
            strokeColor: "#E7746F",
            strokeOpacity: 0.9,
            strokeWeight: 0.9,
            fillColor: "#FF0000",
            fillOpacity: 0.02,
            clickable: false,
            map: map
        });
            map.fitBounds(item.bound);
    }
}

function getBoundPoints(strMaDiaBan) {
    var jsonResult;
    $.ajax({
        //url: '/Area/GetAreaBoundPointByAreaCode',
        url: strUrlGetAreaCode,
        headers: headers,
        type: "GET",
        dataType: "json",
        cache: false,
        data: { 'AREA_CODE': strMaDiaBan },
        success: function (data) {
            jsonResult = data;
        },
        error: function () {
            alert('Không kết nối được đến DataBase 227!');
            return null;
        },
        complete: function () {
            if (jsonResult == "") {
                selectCommune();
            }
            else {
                deleteMarkers();
                var arrPoints = [];
                $.each(jsonResult, function (i, item) {
                    arrPoints.push(new viettel.LatLng(item.Lat, item.Lon));
                });
                var polygon = new viettel.Polygon({
                    paths: arrPoints,
                    strokeColor: "#938FF4",
                    strokeOpacity: 0.8,
                    strokeWeight: 0.9,
                    fillColor: "#938FF4",
                    fillOpacity: 0.1,
                    clickable: true,
                    map: map
                });
                allmarkers.push(polygon);
                map.fitBounds(getBoundary(arrPoints));
                getAllHouseHold(strMaDiaBan);
            }
        }
    });
}

function getAllHouseHold(maDiaBan) { //maKVHC truong hop view level trung uong thi truyen ""
    //var strReturn = "không tìm thấy";
    var jsonResult;
    $.ajax({
        //url: '/Area/GetAllHouseID',
        url: strUrlGetAllHouseID,
        headers: headers,
        contentType: "application/json; charset=utf-8",
        type: "GET",
        dataType: "json",
        data: { 'AREA_CODE': maDiaBan },
        async: false,
        responseType: "json",
        success: function (respone) {
            jsonResult = respone;
        },
        error: function () {
            alert('Không kết nối được đến DataBase 242!');
            return null;
        },
        complete: function () {
            //Xu ly ve bookmark o day
            for (var i = 0; i <= jsonResult.length; i++) {
                //xac dinh mau tuong ung cua khu vuc hanh chinh dua vao tong dan so tuong ung
                var maho = jsonResult[i].HOUSEHOLD_ID;
                var intTotal = jsonResult[i].HOUSEHOLD_NUMBER;
                var intHouseHoldName = jsonResult[i].HOUSEHOLD_NAME;
                var intHouseHoldNum = jsonResult[i].NUM_OF_HH_MEMBER;
                var initHHmobile = jsonResult[i].HH_HEAD_MOBILE;
                var initHHemail = jsonResult[i].HH_HEAD_EMAIL;
                var strAddress = jsonResult[i].ADDRESS_DETAILS;
                var intLatitude = jsonResult[i].GPS_LATITUDE;
                var intLongitude = jsonResult[i].GPS_LONGITUDE;
                var initGPS = jsonResult[i].GPS_ACCURACY; //--> join với bảng address
                var initSurvey = jsonResult[i].SURVEY_METHOD_NAME;// --> hiển thị Tên phương thức điều tra join với bảng SURVEY_METHOD_ID
                var initOnline = jsonResult[i].ONLINE_SURVEY_STATUS;// 0 --> hiển thị chưa hoàn thành; 1 --> hiển thị đã hoàn thành


                if (typeof (intTotal) == "undefined" || intTotal == null) {
                    intTotal = "";
                }
                
                if (typeof (strAddress) == "undefined" || strAddress == null) {
                    strAddress = "";
                }

                if (typeof (intHouseHoldNum) == "undefined" || intHouseHoldNum == null) {
                    intHouseHoldNum = "";
                }

                if (typeof (intHouseHoldName) == "undefined" || intHouseHoldName == null) {
                    intHouseHoldName = "";
                }

                if (typeof (initHHmobile) == "undefined" || initHHmobile == null) {
                    initHHmobile = "";
                }

                if (typeof (initHHemail) == "undefined" || initHHemail == null) {
                    initHHemail = "";
                }

                if (typeof (initGPS) == "undefined" || initGPS == null) {
                    initGPS = "";
                }

                if (typeof (initSurvey) == "undefined" || initSurvey == null) {
                    initSurvey = "";
                }
                                
                if (typeof (initOnline) == "undefined" || initOnline == null) {
                    initOnline = "";
                }

                if (initOnline == "0"){
                    var strInitOnline = "Chưa hoàn thành";
                }
                else if (initOnline == "1"){
                    var strInitOnline = "Đã hoàn thành";
                }
                //01 02 03 oline tab giay
                var img = null;
                var size = new viettel.Size(16, 16);
                if (jsonResult[i].SURVEY_METHOD_ID == "01") {
                    img = new viettel.MarkerImage("../Images/Xanh.png", null, null, null, size); // Tạo ảnh 
                }
                else if (jsonResult[i].SURVEY_METHOD_ID == "02") {
                    img = new viettel.MarkerImage("../Images/Cam.png", null, null, null, size); // Tạo ảnh 
                }
                else if (jsonResult[i].SURVEY_METHOD_ID == "03") {
                    img = new viettel.MarkerImage("../Images/Tim.png", null, null, null, size); // Tạo ảnh 
                }
                else {
                    img = new viettel.MarkerImage("../Images/Grey.png", null, null, null, size); // Tạo ảnh 
                } 
                var pt = new viettel.LatLng(intLatitude, intLongitude);

                 // kích thước ảnh
                // Create marker
                var marker = new viettel.LabelMarker({
                    position: pt,
                    map: map,
                    icon: img, // truyền ảnh vào điểm
                    labelContent: "<b>" + intTotal + "</b>",
                    labelVisible: true,
                    labelClass: "markerlabel",
                    draggable: true
                });

                //gopro,20150404: bo sung tong so nguoi va tong so nu
                marker.setTitle("<b>Mã chủ hộ: </b>" + maho +
                                "<br/><b>Số hộ: </b>" + intTotal +
                                "<br/><b>Tên chủ hộ: </b>" + intHouseHoldName +
                                "<br/><b>Số nhân khẩu: </b>" + intHouseHoldNum +
                                "<br/><b>Sđt chủ hộ: </b>" + initHHmobile +
                                "<br/><b>Email chủ hộ: </b>" + initHHemail +
                                "<br/><b>Địa chỉ chi tiết: </b>" + strAddress +
                                "<br/><b>Vĩ độ: </b>" + intLatitude +
                                "<br/><b>Kinh độ: </b>" + intLongitude +
                                "<br/><b>Sai số: </b>" + initGPS +
                                "<br/><b>Phương thức: </b>" + initSurvey +
                                "<br/><b>Trạng thái: </b>" + strInitOnline);

                mahoGlobal.push(maho);
                allmarkers.push(marker);
                //tao su kien cho marker
                enableMarkerClick(i);
                markers.push(marker);
                registerMarkerEventAll(i);
            }
        }
    });
}

function enableMarkerClick(i) {
    viettel.Events.addListener(allmarkers[i+1], "click", function (evt) {
        var obj = this;
        openInfoBox(allmarkers[i+1]);
    });
}

function openInfoBox(marker) {
    $("#ThongTin").show(1000);
    $("#DBDT").empty();
    $("#DBDT").append(marker.getTitle());
}


// Tra ve boundary tu path
function getBoundary(path) {
    var b = new viettel.LatLngBounds();
    for (var i = 0; i < path.length; i++) {
        b = b.extend(path[i]);
    }
    return b;
}

function deleteMarkers() {
    if (allmarkers != null) {
        for (var i = 0; i < allmarkers.length; i++) {
            allmarkers[i].setMap(null);
        }
    }
    allmarkers = [];
}

function registerMarkerEventAll(i) {
    viettel.Events.addListener(allmarkers[i + 1], "dragend", function (evt) {
        if (evt != null) {
            var obj = this;
            //allPointMarkers += mahoGlobal[i] + "," + evt.latLng+ "-";
            allPointMarkers.push(mahoGlobal[i] + "," + evt.latLng + "-");
        }
    });
}